//
//  node.h
//  ShannonFano
//
//  Created by Alessio Scannapieco on 18.11.11.
//  Copyright 2011 SUPSI - Manno. All rights reserved.
//

#ifndef ShannonFano_Node_h
#define ShannonFano_Node_h

#define MAX_LENGTH_CODE 256

typedef struct node Node;

struct node {
    // valore ASCII del simbolo (0..255)
    // int valueASCII;
    unsigned char valueASCII;
    
    // ricorrenze all'interno del file
    unsigned long int count;
    
    // codice con il quale sarà codificato
    unsigned long int length;
    unsigned long int shannonFanoCode;
    unsigned int shannonFanoBinCode[MAX_LENGTH_CODE];
    
    unsigned long int canonicalCode;
    unsigned int canonicalBinCode[MAX_LENGTH_CODE];
    
    // sottoalbero sinistro
    Node *left;
    
    // sottoalbero destro
    Node *right;
};

void printBinaryTree (Node *root, int level);

#endif